Reinforcement Learning (RL) একটি ধরনের মেশিন লার্নিং যেখানে এজেন্টটি একটি পরিবেশের সাথে ইন্টারঅ্যাক্ট করে এবং একটি নির্দিষ্ট লক্ষ্য অর্জন করতে পুরস্কার বা শাস্তি পায়। এটি এক ধরণের শিক্ষণ পদ্ধতি যেখানে এজেন্ট তার অভিজ্ঞতা থেকে শিখে এবং সময়ের সাথে তার নীতিমালা (policy) বা সিদ্ধান্ত গ্রহণ প্রক্রিয়া উন্নত করে।
এই প্রজেক্টে, আমরা Q-Learning (একটি জনপ্রিয় Reinforcement Learning অ্যালগরিদম) ব্যবহার করে একটি প্রাথমিক RL সমস্যা সমাধান করবো, যেখানে একটি এজেন্ট একটি গ্রিড (grid) পরিবেশে হাঁটছে এবং একটি নির্দিষ্ট লক্ষ্য (goal) অর্জন করার চেষ্টা করবে।
১. প্রজেক্টের পরিবেশ (Environment)
এখানে আমরা একটি গ্রিড পরিবেশ তৈরি করবো, যেখানে একটি এজেন্ট থাকবে এবং তাকে এক স্থান থেকে অন্য স্থানে যেতে হবে। এজেন্টটি একটি ছোট ৫x৫ গ্রিডের মধ্যে থাকবে এবং তার লক্ষ্য হবে একটি নির্দিষ্ট স্থান (goal) পর্যন্ত পৌঁছানো।
এজেন্টটি একে একে ৪টি অ্যাকশন নিতে পারে:
- Up (উপর)
- Down (নিচে)
- Left (বামে)
- Right (ডানে)
এজেন্ট যদি সঠিকভাবে তার লক্ষ্য অর্জন করতে পারে, তবে তাকে একটি পুরস্কার (reward) দেওয়া হবে। যদি সে ভুল পথে চলে বা গণ্ডগোলের মধ্যে পড়ে, তাকে শাস্তি (penalty) দেওয়া হবে।
২. Q-Learning Algorithm
Q-Learning একটি জনপ্রিয় RL অ্যালগরিদম, যেখানে Q-table ব্যবহার করা হয় এজেন্টের বিভিন্ন স্টেট এবং অ্যাকশন অনুযায়ী পুরস্কার আপডেট করতে। Q-table এ একটি ভ্যালু থাকে যা বর্তমান স্টেট থেকে একটি অ্যাকশন নেওয়ার পর, ভবিষ্যতে সম্ভাব্য পুরস্কারের গড় হিসাব করে।
Q-Learning Algorithm এর Steps:
- Initialization: Q-table শুরুতে সমস্ত স্টেট এবং অ্যাকশন এর জন্য শূন্য (0) ভ্যালু দ্বারা ইনিশিয়ালাইজ করা হয়।
- Explore & Exploit: এজেন্ট কিছুক্ষণের জন্য নতুন অ্যাকশন ট্রাই করতে পারে (explore), এবং পরে সর্বোচ্চ পুরস্কারের জন্য জানি এমন অ্যাকশন নেওয়ার চেষ্টা করে (exploit)।
- Reward Update: প্রতি স্টেপে পুরস্কার পাওয়ার পর Q-table আপডেট করা হয়।
Q-Learning formula:
এখানে:
- হল স্টেট (current state)
- হল অ্যাকশন (action)
- হল learning rate
- হল discount factor
- হল immediate reward
- হল পরবর্তী স্টেট (next state)
- হল পরবর্তী স্টেটে সম্ভাব্য সর্বোচ্চ Q-value
৩. Python কোড: Q-Learning Example
এখানে একটি পythন কোড দিচ্ছি, যেখানে একটি গ্রিডে এজেন্ট হাঁটছে এবং Q-Learning অ্যালগরিদম ব্যবহার করে তার লক্ষ্য অর্জন করার চেষ্টা করছে।
কোড:
import numpy as np
import random
# Grid Environment (5x5)
grid_size = 5
goal = (4, 4) # Goal location
start = (0, 0) # Start location
# Q-Table Initialization
Q = np.zeros((grid_size, grid_size, 4)) # 4 actions (up, down, left, right)
actions = [(0, 1), (0, -1), (1, 0), (-1, 0)] # Right, Left, Down, Up
# Hyperparameters
alpha = 0.8 # Learning rate
gamma = 0.9 # Discount factor
epsilon = 0.1 # Exploration rate
episodes = 1000 # Number of episodes
max_steps = 100 # Max steps per episode
# Reward function
def reward(state):
if state == goal:
return 100 # Reward for reaching the goal
else:
return -1 # Step penalty
# Get next state after taking an action
def next_state(state, action):
new_state = (state[0] + action[0], state[1] + action[1])
if 0 <= new_state[0] < grid_size and 0 <= new_state[1] < grid_size:
return new_state
return state # If out of bounds, return current state
# Epsilon-Greedy Policy (exploration vs exploitation)
def choose_action(state):
if random.uniform(0, 1) < epsilon:
return random.choice(range(4)) # Explore: random action
else:
return np.argmax(Q[state[0], state[1]]) # Exploit: best action
# Training Loop (Q-Learning)
for episode in range(episodes):
state = start # Start each episode from the start position
for step in range(max_steps):
action = choose_action(state)
new_state = next_state(state, actions[action]) # Get next state
r = reward(new_state) # Get reward
# Q-Update rule
Q[state[0], state[1], action] = Q[state[0], state[1], action] + alpha * (
r + gamma * np.max(Q[new_state[0], new_state[1]]) - Q[state[0], state[1], action]
)
state = new_state # Move to the next state
if state == goal: # If goal is reached, end the episode
break
# Test the learned policy
state = start
steps = 0
while state != goal and steps < max_steps:
action = np.argmax(Q[state[0], state[1]]) # Exploit: best action
state = next_state(state, actions[action])
print(f"Step {steps + 1}: {state}")
steps += 1
print(f"Goal reached in {steps} steps!")
কোডের ব্যাখ্যা:
- Environment Setup:
- এখানে আমরা একটি 5x5 গ্রিড তৈরি করেছি, যেখানে এজেন্টের শুরু অবস্থান
(0,0)এবং লক্ষ্য(4,4)।
- এখানে আমরা একটি 5x5 গ্রিড তৈরি করেছি, যেখানে এজেন্টের শুরু অবস্থান
- Q-Table Initialization:
- Q-table তৈরি করা হয়েছে, যেখানে 4টি অ্যাকশন (উপর, নিচ, বামে, ডানে) জন্য Q-ভ্যালু রাখা হয়েছে।
- Reward Function:
- যদি এজেন্ট লক্ষ্যস্থানে পৌঁছায়, তাকে 100 পুরস্কার দেয়া হয়, অন্যথায় তাকে -1 শাস্তি দেয়া হয়।
- Exploration vs Exploitation (Epsilon-Greedy):
- Epsilon-Greedy পদ্ধতি ব্যবহার করে এজেন্ট একদিকে নতুন অ্যাকশন অন্বেষণ (explore) করবে এবং অন্যদিকে সেরা অ্যাকশন ব্যবহার করে পুরস্কার পাওয়ার চেষ্টা করবে (exploit)।
- Training Loop:
- প্রাথমিক অবস্থান থেকে শুরু করে, এজেন্ট তার অ্যাকশন এবং Q-value আপডেট করে প্রতিটি পদক্ষেপে (step) নতুন অবস্থানে চলে যাবে।
- Testing the learned policy:
- প্রশিক্ষণের পর, আমরা এজেন্টকে পরীক্ষা করি, যেখানে সে সবচেয়ে ভালো অ্যাকশন বেছে নিয়ে লক্ষ্যস্থানে পৌঁছানোর চেষ্টা করবে।
ফলাফল:
এই কোডটি Q-Learning অ্যালগরিদম ব্যবহার করে 5x5 গ্রিড পরিবেশে এজেন্টকে একটি নির্দিষ্ট লক্ষ্য অর্জন করতে শেখাবে। প্রাথমিকভাবে এজেন্টটি লক্ষ্যপূরণের জন্য র্যান্ডমভাবে চলবে, তবে প্রশিক্ষণের মাধ্যমে এজেন্ট তার নীতিমালা শিখে এবং দ্রুত লক্ষ্যস্থানে পৌঁছাবে।
সারাংশ:
Reinforcement Learning একটি শক্তিশালী পদ্ধতি, যা এজেন্টের মাধ্যমে পরিবেশের সাথে ইন্টারঅ্যাক্ট করে শেখার কাজ করে। Q-Learning এর মাধ্যমে এজেন্ট একটি স্টেট এবং অ্যাকশনের সঠিক সম্পর্ক শিখে, তার সিদ্ধান্ত গ্রহণ প্রক্রিয়া উন্নত করে। এই প্রজেক্টে, আমরা Q-Learning ব্যবহার করে একটি সাধারন grid environment তৈরি করেছি যেখানে এজেন্ট একটি লক্ষ্য অর্জন করার চেষ্টা করেছে।
Read more